package cn.yunyichina.provider.sb.vo;

/**
 * Created by 15-AK on 2017/7/12.
 */

import cn.yunyichina.provider.sb.entity.MedicalOutpatientFee;
import lombok.Getter;
import lombok.Setter;

/**门诊费用列表信息**/
@Getter
@Setter
public class MedicalOutpatientFeeVo {
    /**门诊流水号	String(64)	关联诊疗记录门诊流水号	不可空	125617814957521000**/
    private String outpatientSerialNo;
    /**退款流水号	String(64)	退款时，传退款水流号	可空	125617814957521000**/
    private String refundSerialNo;
    /**社会保障号码	String(32)	社会保障号码	不可空**/
    private String socialSecurityNo;
    /**	医保类型	String(2)	01-社会基本医疗保险，02-商业医疗保险，03-大病统筹 ，04-新型农村合作医疗，05-城镇居民基本医疗保险，06-公费医疗，99-其他	不可空	01**/
    private String insType;
    /**发票编号	String(64)		不可空**/
    private String invoiceNo;

    /**目录类别	String(1)	1-药品，2-诊疗项目，3-医用材料，4-其它	不可空	1**/
    private Short directoryCategory;
    /**医疗费用结算方式名称	String(64)	01-现金，02-支票，03-汇款存款，04-内部转账，05-单位记账，06-账户金，07-统筹金，08-银行卡，99-其他  	可空	现金**/
    private String medicalExpenseSettlementModeName;
    /**医疗费用结算方式代码	String(2)	01-现金，02-支票，03-汇款存款，04-内部转账，05-单位记账，06-账户金，07-统筹金，08-银行卡，99-其他  	可空	01**/
    private String medicalExpenseSettlementModeNo;
    /**发票总金额	String(16)	以元为单位，两位小数	不可空	200.00**/
    private Integer totalInvoice;
    /**自费总额(非商业保险)	String(16)	以元为单位，两位小数	不可空	200.00**/
    private Integer totalSelfExpense;
    /**自理总额(目录内自负比例部分)	String(16)	以元为单位，两位小数	不可空	200.00**/
    private Integer totalSelfCareExpense;
    /**本次统筹支付金额	String(16)	以元为单位，两位小数	不可空**/
    private Integer overallPaymentExpense;
    /**本次大额支付金额	String(16)	以元为单位，两位小数	不可空**/
    private Integer largePaymentExpense;
    /**统筹基金支出	String(16)	以元为单位，两位小数	不可空**/
    private Integer overallFundExpenditure	;
    /**往年账号支付（含支付自费部分）	String(16) 	以元为单位，两位小数	可空**/
    private Integer previousAccountPayment;
    /**当年账号支付	String(16)	以元为单位，两位小数	可空***/
    private Integer currentAccountPayment;
    /***公务员补助支付	String(16)	以元为单位，两位小数	可空**/
    private Integer civilSubsidyPayment;
    /**个人自负（账号不足现金）	String(16)	以元为单位，两位小数	可空**/
    private Integer personalConceit	;
    /***个人现金支付	String(16)	以元为单位，两位小数	可空**/
    private Integer personalCashPayment;
    /**当年账号余额	String(16)	以元为单位，两位小数	可空***/
    private Integer currentAccountBalance;
    /***	历年账号余额	String(16)	以元为单位，两位小数	可空**/
    private Integer previousAccountBalance;
    /***本次大病合规费用	String(16)	以元为单位，两位小数	可空**/
    private Integer seriousIllnessComplianceExpense;
    /***困难救助基金支出	String(16)	以元为单位，两位小数	可空**/
    private Integer difficultReliefFundPayment;
    /***劳模基金支出	String(16)	以元为单位，两位小数	可空**/
    private Integer modelWorkerFundPayment;
    /***	保健基金支出	String(16)	以元为单位，两位小数	可空**/
    private Integer healthFundPayment;
    /***提示信息	String(64)		可空***/
    private String promptMessage;
    /***建国前老工人基金支出	String(16)	以元为单位，两位小数	可空**/
    private Integer oldWorkerFundPayment;
    /**医院承担费用	String(16)	以元为单位，两位小数	可空***/
    private Integer hospitalCommitment;
    /**	其他基金支出	String(16)	以元为单位，两位小数	可空**/
    private Integer otherFundPayment;
    /***收款时间	Date		可空**/
    private String collectionDate;
    /**	收款单位	String(256)		可空**/
    private String collectionUnit;
    /***收费人	String(32)		可空**/
    private String toller;
    /**报案号	String(64)	报案号	不可空**/
    private String caseNo;
    /****费用id	String(64)	费用id 	不可空*/
    private String payNo;
    /**总条数	String(16)	记录总条数	不可空	1**/
    private String invoiceType;
    private Integer totalRows;
    /**当前第几条	String(16)	总条数确定下当前条数是第几条，从1开始计数	不可空	不可空	1***/
    private Integer  currentOffset;



    public MedicalOutpatientFeeVo buildMedicalOutpatientFeeVo(MedicalOutpatientFee medicalOutpatientFee){
        this.setOutpatientSerialNo(medicalOutpatientFee.getMzFeeId());
        this.setRefundSerialNo(medicalOutpatientFee.getReFundFeeId());
        this.setSocialSecurityNo(medicalOutpatientFee.getSocialSecurityNo());
        this.setInsType(medicalOutpatientFee.getInsuranceType());
        this.setInvoiceNo(medicalOutpatientFee.getInvoiceNo());

        this.setDirectoryCategory(medicalOutpatientFee.getListType());
        this.setMedicalExpenseSettlementModeName(medicalOutpatientFee.getMedicalFeeSettleName());
        this.setMedicalExpenseSettlementModeNo(medicalOutpatientFee.getMedicalFeeSettleCode());
        this.setTotalInvoice(medicalOutpatientFee.getInvoiceTotalAmount());

        this.setTotalSelfExpense(medicalOutpatientFee.getSelfAmount());
        this.setTotalSelfCareExpense(medicalOutpatientFee.getSelfCareAmount());
        this.setOverallPaymentExpense(medicalOutpatientFee.getOverAllAmount());
        this.setLargePaymentExpense(medicalOutpatientFee.getLargeAmount());
        this.setOverallFundExpenditure(medicalOutpatientFee.getFundAmount());

        this.setPreviousAccountPayment(medicalOutpatientFee.getPastYearPayAmount());
        this.setCurrentAccountPayment(medicalOutpatientFee.getCurYearPayAmount());
        this.setCivilSubsidyPayment(medicalOutpatientFee.getCivilServantSubsidyAmount());
        this.setPersonalConceit(medicalOutpatientFee.getPerBurdenAmount());
        this.setPersonalCashPayment(medicalOutpatientFee.getCashAmount());
        this.setCurrentAccountBalance(medicalOutpatientFee.getCurYearBalance());
        this.setPreviousAccountBalance(medicalOutpatientFee.getPastYearBalance());
        this.setSeriousIllnessComplianceExpense(medicalOutpatientFee.getSeriousIllnessComplianceAmount());

        this.setDifficultReliefFundPayment(medicalOutpatientFee.getRescueFundAmount());
        this.setModelWorkerFundPayment(medicalOutpatientFee.getLamorFundAmount());
        this.setHealthFundPayment(medicalOutpatientFee.getHealthFundAmount());
        this.setPromptMessage(medicalOutpatientFee.getPromptMessage());
        this.setOldWorkerFundPayment(medicalOutpatientFee.getOldWorkerFundAmount());
        this.setHospitalCommitment(medicalOutpatientFee.getHospitalCostAmount());
        this.setOtherFundPayment(medicalOutpatientFee.getOtherFundAmount());
        this.setOverallPaymentExpense(medicalOutpatientFee.getOverAllAmount());
        this.setCollectionDate(medicalOutpatientFee.getCollectionTime());
        this.setCollectionUnit(medicalOutpatientFee.getCollectionCompany());
        this.setToller(medicalOutpatientFee.getCollector());
        this.setCaseNo(medicalOutpatientFee.getCaseNo());
        this.setPayNo(medicalOutpatientFee.getPayNo());
        this.setInvoiceType(medicalOutpatientFee.getInvoiceType() ==1?"T":"F");
        this.setTotalRows(medicalOutpatientFee.getTotalRows());
        this.setCurrentOffset(medicalOutpatientFee.getCurrentOffset());
        return this;
    }
}
